replace() 方法返回一个由替换值替换一些或所有匹配的模式后的新字符串。模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。
当第二个参数是字符串时,可以使用特殊变量名
变量名 |
代表的值 |
$$ |
插入一个 “$” |
$& |
插入匹配的子串 |
$` |
插入当前匹配的子串左边的内容 |
$’ |
插入当前匹配的子串右边的内容 |
$n |
假如第一个参数是 RegExp对象,并且 n 是个小于100的非负整数,那么插入第 n 个括号匹配的字符串 |
示例:
1 2 3 4 5 6 7 8 9 10 11
| var str="123{{name}}456";
str.replace(/(\{\{)\w+(\}\})/,"$1code$2"); str.replace(/(\{\{)\w+(\}\})/,"$1co$$de$2"); str.replace(/(\{\{)\w+(\}\})/,"$1co$&de$2"); str.replace(/(\{\{)\w+(\}\})/,"$1co$`de$2"); str.replace(/(\{\{)\w+(\}\})/,"$1co$'de$2");
|
第二个参数也可以使用函数,函数的参数含义为
变量名 |
代表的值 |
match |
匹配的子串。(对应于上述的$&。) |
p1,p2,… |
假如replace()方法的第一个参数是一个RegExp 对象,则代表第n个括号匹配的字符串。(对应于上述的$1,$2等。) |
offset |
匹配到的子字符串在原字符串中的偏移量(即匹配的第一个字符在原字符串的索引)。 |
string |
被匹配的原字符串。 |
示例:
1 2 3 4 5 6 7 8 9
| var str="123{{name}}456"; var s=str.replace(/(\{\{\s*)\w+(\s*\}\})/, function(match,s1,s2,offset,string) { console.log(match) console.log(s1) console.log(s2) console.log(offset) console.log(string) return s1+"code"+s2 })
|